<?php
if ( ! function_exists('my__autoload'))
{
	/**
	 * 自动加载类注册函数
	 *
	 * @desc    class autoload function
	 * @author  Jason
	 * @date    2017年5月2日 下午10:23:06
	 * @param   type $GLOBALS
	 *
	 * @return  boolean	本次autoload成功与否
	 */
	function my__autoload ( $fullClassName )
	{
		$pathSegments = explode('\\', $fullClassName);
		
		$className = array_pop($pathSegments);
		
		$path = APPPATH;
		if (count($pathSegments) > 0) {
			$path .= implode(DIRECTORY_SEPARATOR, $pathSegments) . DIRECTORY_SEPARATOR;
		}
		
		$fileName = $className;
		if (strpos($className, 'Lib_') === 0) {
			$fileName = 'libraries' . DIRECTORY_SEPARATOR . $className;
		}
		
		$file = $path . $fileName . ".php";
		
		if (!file_exists($file)) {
			// MARK 这里 throw 不好，因为这样就直接中断后面注册的自动加载函数的执行了！ 
			# throw new Exception('file not found ' . $file);
			return false;
		} else {
			include_once $file;
		}
		
		if (!class_exists($fullClassName, false)
				&& !interface_exists($fullClassName, false)
				&& !trait_exists($fullClassName, false)) {
					# throw new Exception('class not found ' . $fullClassName);
					return false;
		}
		
		return true;
	}
	
	// 如果在你的程序中已经实现了 __autoload() 函数，它必须显式注册到 __autoload 队列中。
	if(function_exists('__autoload')){
		spl_autoload_register('__autoload');
	}
	
	spl_autoload_register('my__autoload');
}

